package com.thread.test20190330.part1.tax7.java8;



/**
 * 之定义函数式接口
 *
 * 函数式接口里是可以包含默认方法，因为默认方法不是抽象方法，其有一个默认实现，所以是符合函数式接口的定义
 * 函数式接口里是可以包含静态方法，因为静态方法不能是抽象方法，是一个已经实现了的方法，所以是符合函数式接口的定义
 * 函数式接口里是可以包含Object里的public方法，这些方法对于函数式接口来说，不被当成是抽象方法（虽然它们是抽象方法）；
 * 因为任何一个函数式接口的实现，默认都继承了Object类，包含了来自java.lang.Object里对这些抽象方法的实现
 *
 * 加不加@FunctionalInterface对于接口是不是函数式接口没有影响，
 * 该注解知识提醒编译器去检查该接口是否仅包含一个抽象方法
 *
 * @author Conceit
 * 2019/4/5 增加方法
 * @since 1.0.0, 2019/4/5
 */

@FunctionalInterface
public interface IFunctionTaxCslculation {
	/**
	 * 抽象方法
	 */
	abstract Integer appley(Integer salary, Integer tax);

	default Integer no1Tax(Integer salary, Integer tax){
		return salary+tax+100;
	}
	static Integer no2Tax(Integer salary, Integer tax){
		return salary+tax-100;
	}

}
